<?php
	include_once '../../include/inc_session.php';	
	
	// Récuperation numéro personne, numéro contrat, type assure, numéro de sinistre 	
//if (isset($_GET['id']) && isset($_GET['idc']) && isset($_GET['typass']) && isset($_GET['sin'])){
	// Construction de l’objet Template
	$oPaj= new Template(PATH_TEMPLATE.'tpl_declarer_sinistre.html');
	
	// Remplacement simple
	$oPaj->replace('nom_module', $oBloc->_MENU_NOM);
	$oPaj->replace('nom_fonction', $oFonction->_MENU_AFFICHE);
	$oPaj->replace('nom_liste', "Détail déclaration");
	$oPaj->replace('edit_action', $sEditFormAction);
	$oPaj->replace('css_module', "../../sinistres/list.css");
	
  	$idUser = $_SESSION["iduser"];
	$idPersonne = $_GET['id'];
  	$sTypass = $_GET['typass'];
  	$idContrat = $_GET['idc'];
  	$idRole = $_GET['idrole'];

	if(!empty($_SESSION['idsinistre']))
 	{
 		$_GET['sin'] = $_SESSION['idsinistre'];	
 	}
 	//test si le sinistre existe
 	
 	if($_GET['sin']== '')
 	{
 		unset($_SESSION['idsinistre']);	
 	}
	 	
 	//Recupération de l'identifiant sinistre
 	$idSinistre = isset($_SESSION['idsinistre']) ? $_SESSION['idsinistre'] : $_GET['sin'];
 	$oSinistre = new dataObject_sinistre($idSinistre);
 	
 	/*$aSinistre = $oSinistre->sinistre_getSinistreContratPersonne($idContrat, $idPersonne);
 	if(!empty($aSinistre) && !empty($aSinistre[0]['Identifiant_sinistre']))
 		$idSinistre = $aSinistre[0]['Identifiant_sinistre'];
 	else unset($_SESSION['idsinistre']);	
 	*/
 	$_SESSION['idsinistre'] = $idSinistre;

	$oPersonne  = new dataObject_personne($idPersonne);
  	$oContrat   = new dataObject_contrat($idContrat);
  	$oCdtIndemn = new dataObject_conditionIndemnisation();
  	$EFFET_DATE = $oContrat->_DATE_EFFET;
 
	if(!empty($oSinistre->_IDENTIFIANT_SINISTRE))
	{
		$TYPE_SINISTRE = $oSinistre->_TYPE_SINISTRE;
		$CAUSE_SINISTRE = $oSinistre->_CAUSE_SINISTRE;
		$SURV_DATE =  $oSinistre->_DATE_SURVENANCE_SINISTRE;
		$DECLA_DATE =  $oSinistre->_DATE_DECLARATION_SINISTRE;
	}
	else
	{
		$TYPE_SINISTRE = (isset($_POST['FT_Type_sinistre'])) ? $_POST['FT_Type_sinistre'] : '';
		$CAUSE_SINISTRE = (isset($_POST['FC_Cause_sinistre'])) ? $_POST['FC_Cause_sinistre'] : '';
		$SURV_DATE = (isset($_POST['ODV_date_survenance'])) ? $_POST['ODV_date_survenance'] : '';
		$DECLA_DATE = (isset($_POST['ODD_date_declaration'])) ? $_POST['ODD_date_declaration'] : '';
	}
	if ($gbFormValid) // Données du formulaire validées, on fait les traitements
	{
				// 6. & 10.
			// Conversation des dates au format anglais (comme dans la base), puis calcul des différences entres les dates
			// Date de déclaration et date de survenance, en années
			// Date de survenance et date d'effet du contrat, en mois
			
			$decla = dateFr_a_en($DECLA_DATE);
			$surv = dateFr_a_en($SURV_DATE);
			$effet = dateFr_a_en($EFFET_DATE);
		
			// $nbJrs = diffDate_en_jours($decla,$surv);
			$nbAnnees = diffDate_en_annees($decla,$surv);
			
			$nbMois = diffDate_en_mois($effet,$surv);
			
			$oSinistre->_TYPE_SINISTRE = $TYPE_SINISTRE;
			$oSinistre->_DATE_SURVENANCE_SINISTRE = $surv;
			$oSinistre->_DATE_DECLARATION_SINISTRE = $decla;
			$oSinistre->_CAUSE_SINISTRE = $CAUSE_SINISTRE;
			$oSinistre->_ETAT_SINISTRE = dataObject_sinistre::ETAT_DECLARE;
						
			// 4.  forcer l’éligibilité du contrat à O (oui)
			$oSinistre->_ELIGIBILITE_SINISTRE = 'O';
			
			$oSinistre->_DECISION_PARTENAIRE_SINISTRE = '';
			$oSinistre->_MOTIF_REFUS_SINISTRE = '';
			$oSinistre->_MODE_REGLEMENT_SINISTRE = '';
			$oSinistre->_IDENTIFIANT_CONTRAT = $idContrat;
			$oSinistre->_IDENTIFIANT_PERSONNE = $idPersonne;
			
			// 1.
				// ******** DEBUT **** if controles dates ************/
				
				if(controle_dates($SURV_DATE,$DECLA_DATE))  // Antériorité ?? de la date de déclaration par rapport à la date de survenance
				{
					$oForm->ajouterErreur(date_decla_anterieure);
// 2.
				}
				elseif(controle_dates($DECLA_DATE,date("d-m-Y")))  // Postériorité ?? de la date de déclaration par rapport à la date du jour
				{
					$oForm->ajouterErreur(date_decla_posterieure);
				}
				else // Pas de problème avec les dates
				{
					
					// Recupération des infos sur l'offre, le produit et la formule souscrits pour un contrat
					$aOffre = $oContrat->getFormuleProduitOffreDuContrat($idContrat);
					
					// recupération Id de l'offre
					$idOffre = $aOffre[0]['Identifiant_offre'];
							
					// On récupère l'id du bénéficiaire et celui du souscripteur, pour le contrat courant
					$idBenef = $oContrat->contrat_getBeneficiaire();
					$idSouscript = $oContrat->contrat_getSouscripteur();
							
// 3.
					// Liste des indemnisations de type "delai" liées à l'offre
					//$asBlocs3 = $oContrat->contrat_getDelaiIndemnisation($idOffre); // FS 30-11-2010
					$asBlocs3 = $oCdtIndemn->get_CdtIndemnTypeDelaiContrat($idContrat, $oContrat->_DATE_EFFET);
					
// 5.
					// Liste des indemnisations de code "DECLA" ou "DECLS" liées à l'offre
					//$asBlocs5 = $oContrat->contrat_getDelaiIndemnisation_2($idOffre);
			
								
					// Le bénéficiaire est il le souscripteur ?
					$bBS = ($idBenef == $idSouscript);

					if(sizeof($asBlocs3)!=0)
					{
					 	foreach($asBlocs3 as $iKey => $aRow)
					 	{	// 8.					 		
						 	if($bBS && ($aRow["Code_condition_indemnisation"]=='DECLS') && (intval($nbAnnees) > intval($aRow["Valeur_condition_indemnisation"])))
						 	{
						 		
						 		$oSinistre->_ELIGIBILITE_SINISTRE = 'N';
						 	}// 7. & utilisation de 5.
						 	elseif(!$bBS && ($aRow["Code_condition_indemnisation"]=='DECLA') && (intval($nbAnnees) > intval($aRow["Valeur_condition_indemnisation"])))
						 	{
						 		$oSinistre->_ELIGIBILITE_SINISTRE = 'N';
 
						 	}// 11. & utilisation de 9.
						 	elseif(($aRow["Code_condition_indemnisation"]=='CAREN') && (intval($nbMois) < intval($aRow["Valeur_condition_indemnisation"])))
						 	{
						 		$oSinistre->_ELIGIBILITE_SINISTRE = 'N';
						 	}
					 	}
					}
							
// 12. - Si le rôle de l’intervenant sinistré n’est pas actif, l’éligibilité du sinistre est à N 
			/* 
			* Pb!!!!! Liste de départ ne comprend que des intervenants actifs  !!!!
			*/
			$aInfoRole = $oPersonne->personne_getInfosFromRole($idRole);
			
			if($aInfoRole['Etat_role'] != 'A')
			{
				//echo "<br>etat role::".$aInfoRole['Etat_role'];
				$oSinistre->_ELIGIBILITE_SINISTRE = 'N';
			}				
// 13.
			$bGarsousActiv = $oSinistre->sinistre_searchGarsousActive();
			
			if(!$bGarsousActiv)
			{
				$oSinistre->_ELIGIBILITE_SINISTRE = 'N';
			}
							

// 14.
			// Liste des indemnisations de type "exclusion" liées à l'offre
			//$asBlocs14 = $oContrat->contrat_getExclusionIndemnisation($idOffre); 
			$asBlocs14 = $oCdtIndemn->get_CdtIndemnTypeExclusionContrat($idContrat, $oContrat->_DATE_EFFET);
				
			if(sizeof($asBlocs14)!=0)
			{
				foreach($asBlocs14 as $iKey => $aRow)
				{
// 15.
					if($aRow["Code_condition_indemnisation"] == $CAUSE_SINISTRE)
					{
						//echo "<br>CAUSE_SINISTRE::".$CAUSE_SINISTRE;
					 		$oSinistre->_ELIGIBILITE_SINISTRE = 'N';
					}
				 }
			}
	
			//$aRole = $oPersonne->personne_getRole($idContrat);
			$aGarsous = $oPersonne->personne_getGarantieSous($idContrat);
				
// 16. & 17. & 18. & 22. & 24.
			$aRole = array();
			$aRole[0] = $aInfoRole;
			$insertion = $oSinistre->sinistre_insert($aRole,$aGarsous,$idUser);
			$tab = explode("-",$insertion);
			
			if($tab[0]) // Création sinistre
			{
				if($tab[1]) // Modification role de l'intervenant 
				{	
					if($tab[2]) // Modification garanties souscrites
					{	
						if($tab[3]) // Création évènement de type sinistre
						{
							if($tab[4]) // Modification personne
							{
								// 19. & 20. & 21. & 23.  tous reliés à // 16. & 17. & 18. & 22. & 24. si l'intervenant est le souscripteur
										// ********** L'intervenant est le souscripteur ? ************
										if(!$oSinistre->sinistre_intervenantIsSouscripteur())  
										{
											$oForm->ajouterErreur(creation_sinistre); //tout ok 
											$iSinistre = $tab[0];
											$_SESSION['idsinistre'] = $iSinistre;
											
										}
										else 
										{	//si c le souscripteur
											if($tab[5]) // Modification du contrat pour passer l’état à résilié
											{	
												if($tab[6]) // Modification role des intervenants actifs 
												{	
													if($tab[7]) // Modification garanties souscrites des intervenants actifs
													{	
														if($tab[8]) // Création évènement de type acte de gestion
														{	
															$oForm->ajouterErreur(creation_sinistre); //tout ok 

// Gestion du retour sur la page depuis les pages justifiactif, synthese															
//															$iSinistre = $oSinistre->_IDENTIFIANT_SINISTRE;
															$iSinistre = $tab[0];
															$_SESSION['idsinistre'] = $iSinistre;
														}
														else
														{
															$oForm->ajouterErreur(pb_crevenement_actegestion_resilsinistre);
														}
													}
													else
													{
														 $oForm->ajouterErreur(pb_modifgarsous_declasinistre_IS);
													}
												}
												else
												{
													 $oForm->ajouterErreur(pb_modifrole_declasinistre_IS);
												}
											}
											else
											{
												$oForm->ajouterErreur(pb_modifcontrat_declasinistre);
											}
										}
				// ********** FIN ****** L'intervenant est le souscripteur ? ************
										
									}
									else
									{
										$oForm->ajouterErreur(pb_modifpersonne_declasinistre);
									}
								}
								else
								{
									$oForm->ajouterErreur(pb_crevenement_declasinistre);
								}
							}
							else
							{
								$oForm->ajouterErreur(pb_modifgarsous_declasinistre);
							}
						}
						else
						{
							$oForm->ajouterErreur(pb_modifrole_declasinistre);
						}
					}
					else
					{
							$oForm->ajouterErreur(err_creation_sinistre);
					}
					
				}// ******** FIN **** if controles dates ************/
		
			}// ******** FIN **** if ($gbFormValid) ************/
			
	

	
	// Construction du formulaire
	
	// Pour remplir tableau avec les libellés au lieu des codes
	
	$aTyp_assure = dataObject_elementdico::elementdico_getNomFromCode($sTypass, dataObject_dictionnaire::TYPE_ASSURE);
	$aType = dataObject_elementdico::elementdico_getListFromCode(dataObject_dictionnaire::TYPE_SINISTRE);
	$aCause = dataObject_elementdico::elementdico_getListFromCode(dataObject_dictionnaire::CAUSE_SINISTRE);
	$sLibSexe = dataObject_elementdico::elementdico_getNomFromCode($oPersonne->_SEXE_PERSONNE, dataObject_dictionnaire::SEXE);
	
	// construction du tableau de valeurs
	$asInputs = array(array('label_input'=>'NOM','input_name'=>'ONO_nom', 'input_value'=> htmlentities($oPersonne->_NOM_PERSONNE, ENT_COMPAT,'utf-8'),'class'=>'resizeall', 'maxlength'=>30),
				array('label_input'=>'PRENOM','input_name'=>'OPN_prenom', 'input_value'=> htmlentities($oPersonne->_PRENOM_PERSONNE, ENT_COMPAT,'utf-8'),'class'=>'resizeall', 'maxlength'=>30),
				array('label_input'=>'DATE DE NAISSANCE','input_name'=>'ODN_date_naissance', 'input_value'=> $oPersonne->_DATE_NAISSANCE_PERSONNE,'class'=>'resizeall', 'maxlength'=>10),
				array('label_input'=>'LIEU DE NAISSANCE','input_name'=>'OLN_lieu_naissance', 'input_value'=> $oPersonne->_LIEU_NAISSANCE_PERSONNE,'class'=>'resizeall', 'maxlength'=>30),
				array('label_input'=>'SEXE','input_name'=>'OSX_sexe', 'input_value'=> htmlentities($sLibSexe, ENT_COMPAT,'utf-8'),'class'=>'resizeall'),
				array('label_input'=>'TYPE ASSURE','input_name'=>'FTA_type_assure', 'input_value'=> $aTyp_assure,'class'=>'resizeall'),

   					  );
   					  
	$asInputs_2 = array(array('label_select_1'=>'TYPE SINISTRE','select_name_1'=>'FT_Type_sinistre')
				);
	$asInputs_4 = array(array('label_select_2'=>'CAUSE ','select_name_2'=>'FC_Cause_sinistre')
				);			
	$aOptions1 = array();	 
   	$aOptions2 = array();	 
   			
   	foreach ($aType as $iKey => $aTypsin)
   	{  		
   		$aOpt = array('option_value_1'=>$aTypsin['Code_element'],'option_name_1'=> htmlentities($aTypsin['Nom_element'], ENT_COMPAT,'utf-8') );
        if($TYPE_SINISTRE == $aTypsin['Code_element']) $aOpt = array_merge($aOpt, array("selected_1"=> ' selected="selected" ')); 
        	
		$aOptions1[$iKey] = $aOpt;   
   	}
   	foreach ($aCause as $iKey => $aCausesin)
   	{
   		$aOpt = array('option_value_2'=>$aCausesin['Code_element'],'option_name_2'=> htmlentities($aCausesin['Nom_element'], ENT_COMPAT,'utf-8') );
        if($CAUSE_SINISTRE == $aCausesin['Code_element']) $aOpt = array_merge($aOpt, array("selected_2"=> ' selected="selected" ')); 
	
		$aOptions2[$iKey] = $aOpt;   
   	}

	$asInputs_3 = array(array('label_input'=>'DATE SURVENANCE','input_name'=>'ODV_date_survenance', 'input_value'=> $SURV_DATE,'class'=>'resizeall', 'maxlength' =>10 ),
				  array('label_input'=>'DATE DECLARATION','input_name'=>'ODD_date_declaration', 'input_value'=> $DECLA_DATE,'class'=>'resizeall', 'maxlength' =>10)

   					  	);
   					  	
   					  	
	$oPaj->iterateReplace('champ_input', $asInputs);
	$oPaj->iterateReplace('champ_input_2', $asInputs_2);
	$oPaj->iterateReplace('options_1', $aOptions1);
	$oPaj->iterateReplace('champ_input_3', $asInputs_3);
	$oPaj->iterateReplace('champ_input_4', $asInputs_4);
	$oPaj->iterateReplace('options_2', $aOptions2);

//	$oPaj->replace('num_contrat', $sCONTRAT_NUM);
	$oPaj->replace('bRetour_fonction', true);
	$oPaj->replace('url_retour_fonction', 'index.php?idbloc='.$oBloc->_MENU_ID.'&idfonction='.$oFonction->_MENU_ID.'&idc='.$idContrat.'&sin='.$_SESSION['idsinistre']);
	$oPaj->replace('bBouton_justificatifs', true);
	if(isset($_SESSION['idsinistre']) && ($_SESSION['idsinistre'] != '') )
	{
		$sUrlSynthese  = 'synthese_sinistre.php?idbloc='.$oBloc->_MENU_ID.'&idfonction='.$oFonction->_MENU_ID.'&id='.$idPersonne.'&idc='.$idContrat.'&typass='.$sTypass.'&sin='.$_SESSION['idsinistre'];
		$sUrlJustif = 'justificatifs_sinistre.php?idbloc='.$oBloc->_MENU_ID.'&idfonction='.$oFonction->_MENU_ID.'&id='.$idPersonne.'&idc='.$idContrat.'&typass='.$sTypass.'&sin='.$_SESSION['idsinistre'];
	}
	else 
	{
		$sUrlSynthese  = '#';
		$sUrlJustif =  '#';
	}
	$oPaj->replace('url_synthese', $sUrlSynthese);
	
	$oPaj->replace('url_justificatif', $sUrlJustif);
	

	$oPaj->iterateReplace('messages', $oForm->getValidMessage());
	
	
	/***** affichage de la page ainsi parametrée *****/
	echo $oPaj->toString();


//}// ******** FIN **** if (isset($_GET['id'])) ************/	

	include_once PATH_INCLUDE.'inc_pied_page.php';
?>
